package com.sakura.config;

import com.sakura.bean.Person;
import com.sakura.service.BookService;
import org.springframework.context.annotation.*;
import org.springframework.stereotype.Controller;
import org.springframework.stereotype.Repository;
import org.springframework.stereotype.Service;

/**
 * @author Sakura
 * @Date 2023-02-20 18:09
 */
@Configuration
@ComponentScans(value = {
        @ComponentScan(value = "com.sakura",includeFilters = {
//                @ComponentScan.Filter(type = FilterType.ANNOTATION,classes = {Repository.class}),
//                @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE,classes = {BookService.class})
                @ComponentScan.Filter(type = FilterType.CUSTOM,classes = {MyTypeFilter.class})
        },useDefaultFilters = false)
})
//@ComponentScan  value:指定要扫描的包
    //excludeFilters = Filter[] ：指定扫描的时候按照什么规则排除那些组件
    //includeFilters = Filter[] ：指定扫描的时候只需要包含哪些组件
        //FilterType.ANNOTATION：按照注解
        //FilterType.ASSIGNABLE_TYPE：按照给定的类型；
        //FilterType.ASPECTJ：使用ASPECTJ表达式
        //FilterType.REGEX：使用正则指定
        //FilterType.CUSTOM：使用自定义规则,实现TypeFilter -->见 config.MyTypeFilter
public class MainConfig {

    //给容器中注册一个Bean;类型为返回值的类型，id默认是用方法名作为id
    @Bean(name = "person11")
    public Person person(){
        return new Person("李四",20);
    }
}
